package datastruct.lineList;

/**
 * 线性表结构
 * @author RunningShrimp
 * @date 2021/5/8  22:02
 */
public interface LineList<E> {
    /**
     * 增加元素
     * @param e 待添加元素
     * @param index 待添加元素索引出
     * @return 是否添加成功
     */
    boolean add(E e,int index);

    /**
     * 添加元素
     * @param e
     * @return
     */
    boolean add(E e);

    /**
     * 删除元素
     * @param e 待删除的元素
     * @return 返回删除的元素
     */
    E remove(E e);

    /**
     * 删除元素
     * @param index 待删除元素的索引位置
     * @return 返回删除的元素
     */
    E remove(int index);

    /**
     * 获取元素
     * @param index 元素的位置
     * @return 位置元素
     */
    E get(int index);

    /**
     * 更新元素
     * @param e 更新后的元素
     * @param index 待更新元素的位置
     * @return 是否更新成功
     */
    boolean set(E e,int index);

    /**
     * 线性表是否为空
     * @return true为空
     */
    boolean isEmpty();

    /**
     * 查找元素是否存在
     * @param e 待查找元素
     * @return
     */
    boolean contains(E e);

    /**
     * 查找元素所在的索引
     * @param e 待查找的元素
     * @return 返回索引值
     */
    int find(E e);

    /**
     * 清除所有元素
     * @return 清除结果
     */
    boolean clear();

    /**
     * 元素长度
     * @return
     */
    int size();
}
